<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>02_执行上下文</title>
</head>
<body>
<!--
1. 代码分类(位置)
  * 全局代码
  * 函数代码
2. 执行上下文分类：
  * 全局执行上下文
  * 函数执行上下文
  * eval函数执行上下文
2. 执行上下文
  * 理解: 执行上下文是一个抽象的概念，用于描述代码从被解析到代码执行时候所处环境的工作机制
  * js引擎工作机制(js代码正式执行之前js引擎会先做预解析的工作，预解析工作内容如下)：
    1. 创建执行上下文环境
    2. 在当前的执行环境中创建变量对象，用于收集：变量，函数，函数的参数(arguments)
    3. 确认this的指向
    4. 创建作用域链

-->
<script type="text/javascript">

  console.log(a1)
  console.log(a2)
  console.log(a3)
  // console.log(a4)
  console.log(this) // window

  var a1 = 3
  var a2 = function () {
    console.log('a2()')
  }
  function a3() {
    console.log('a3()')
  }
  a4 = 4

  a3();


  // function fn(x, y) {
  //   console.log(x, y)
  //   console.log(b1)
  //   console.log(b2)
  //   console.log(arguments)
  //   console.log(this)
  //
  //   // console.log(b3)
  //
  //   var b1 = 5
  //   function b2 () {
  //
  //   }
  //   b3 = 6
  // }
  // fn()


</script>
</body>
</html>